/*
    类到对象是实例化，对象到类是抽象
    抽象类：
        1、什么是抽象类？
            类和类之间具有共同特征，将这些共同特征提取出来，形成的就是抽象类
            类本身是不存在的，所以抽象类无法创建对象   《无法实例化》
        2、抽象类属于什么类型？
            抽象类也属于引用数据类型
        3、语法定义？
            [修饰符列表] abstract class 类名{
                类体；
            }
        4、抽象类是无法实例化的，无法创建对象的，所以抽象类是用来被子类继承的
        5、final和abstract不能联合使用
        6、抽象类的子类仍然可以是抽象类
        7、抽象类虽然无法实例化，但是抽象类有构造方法，这个构造方法是供子类使用的
        8、抽象方法：表示没有实现的方法，没有方法体的方法。
            例如：public abstract void dosome();
        9、抽象类中不一定有抽象方法，抽象方法必须出现在抽象类中
            ————重要结论：一个非抽象类继承抽象类，必须将抽象类中的抽象方法实现了（也可以叫做覆盖或者重写）

        判断题：java语言中凡是没有方法体的方法都是抽象方法（×）
            Object类中很多方法都没有方法体，都是以";"结尾的，但他们都不是抽象方法
            例如：public native int hashCode();
                这个方法底层调用了C++写的动态链接库程序，native表示调用JVM本地程序
 */

//代码针对第9点
public class AbstractTest01 {
    public static void main(String[] args) {
        //多态
        Animal a = new Bird();
        a.move();
    }
}

abstract class Animal{

    //抽象方法
    public abstract void move();

}

class Bird extends Animal{
    //需要将父类继承过来的抽象方法进行重写
    public void move(){
        System.out.println("鸟儿飞飞");
    }


}
